package model

import (
	"chat_srv/basic/config"
	"time"
)

// 好友申请表
type FriendApplication struct {
	Id          uint      `gorm:"column:id;type:bigint UNSIGNED;comment:主键id;primaryKey;not null;" json:"id"`              // 主键id
	ApplicantId uint      `gorm:"column:applicant_id;type:bigint UNSIGNED;comment:申请人id;not null;" json:"applicant_id"`    // 申请人id
	RecipientId uint      `gorm:"column:recipient_id;type:bigint UNSIGNED;comment:接收人id;not null;" json:"recipient_id"`    // 接收人id
	Status      uint      `gorm:"column:status;type:int UNSIGNED;comment:用户状态：1待处理 2已同意 3已拒绝;default:NULL;" json:"status"` // 用户状态：1待处理 2已同意 3已拒绝
	Greeting    string    `gorm:"column:greeting;type:varchar(255);comment:打招呼内容;default:NULL;" json:"greeting"`           // 打招呼内容
	CreatedAt   time.Time `gorm:"column:created_at;type:datetime(3);comment:申请发送时间;default:NULL;" json:"created_at"`       // 申请发送时间
	UpdatedAt   time.Time `gorm:"column:updated_at;type:datetime(3);comment:最后处理时间;default:NULL;" json:"updated_at"`       // 最后处理时间
}

// 设置与数据库映射
func (fa *FriendApplication) TableName() string {
	return "friend_application"
}

// 添加好友申请
func (fa *FriendApplication) Create() error {
	return config.DB.Create(&fa).Error
}

// 查询好友申请
func (fa *FriendApplication) GetFriendApplication(where *FriendApplication) error {
	return config.DB.Where(where).Limit(1).Find(&fa).Error
}

// 修改好友申请
func (fa *FriendApplication) Update(where *FriendApplication, status uint) error {
	return config.DB.
		Model(&fa).
		Where(where).
		Update("status", status).Error
}
